package com.my.springbootsatoken;

import cn.dev33.satoken.stp.SaLoginConfig;
import cn.dev33.satoken.stp.StpUtil;
import cn.dev33.satoken.util.SaResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author mars
 * @date 2024-08-30 14:18
 */
@RestController
@RequestMapping("/login/")
public class LoginController {
    /**
     * 登录
     *
     * @param username 用户名
     * @param password 密码
     * @return 登录状态
     */
    @GetMapping("doLogin")
    public SaResult doLogin(String username, String password) {
        // 此处仅作模拟示例，真实项目需要从数据库中查询数据进行比对
        if ("admin".equals(username) && "123456".equals(password)) {

            // 连缀写法追加多个
            StpUtil.login(10001, SaLoginConfig
                    .setExtra("name", "amdin")
                    .setExtra("age", 18)
                    .setExtra("role", "超级管理员"));
            return SaResult.data("登录成功，token 信息是： " + StpUtil.getTokenInfo());
        }
        return SaResult.error( "登录失败");
    }

    /**
     * 获取登录状态
     */
    @GetMapping("isLogin")
    public String isLogin() {
        return "是否登录：" + StpUtil.isLogin();
    }

    /**
     * 登出
     *
     * @return SaResult
     */
    @GetMapping("logout")
    public SaResult logout() {
        StpUtil.logout();
        return SaResult.ok();
    }

    /**
     * 获取 Token
     *
     * @return token
     */
    @GetMapping("getToken")
    public SaResult getToken() {
        return SaResult.data(StpUtil.getTokenInfo());
    }
}
